#region Acerca de...
///////////////////////////////////////////////////////////////////////////
// Empresa:  Instituto Tecnológico de Costa Rica
// Proyecto: Catalogo Produccion Agricola Protegida en Costa Rica
// Descripción: Clase de acceso a datos para tabla 'EQUIPAMIENTO'
// Generado por ITCR Gen v2010.0.0.0 
// Fecha: Tuesday, November 13, 2012, 10:46:26 PM
// Dado que esta clase implementa IDispose, las clases derivadas no deben hacerlo.
///////////////////////////////////////////////////////////////////////////
#endregion


using System;
using System.Data;
using System.Data.SqlTypes;
using System.Data.SqlClient;
//using Microsoft.SqlServer.Types;  //usarlo cuando hay tipos Geometry, Geography, HierarchiId. Está en C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Types.dll

namespace ITCR.ProyectoAgricola.Base
{
	/// <summary>
	/// Propósito: Clase de acceso a datos para tabla 'EQUIPAMIENTO'.
	/// </summary>
	public class cEQUIPAMIENTOBase : cBDInteraccionBase
	{
		#region Declaraciones de miembros de la clase
			private SqlInt32		_humedecimientoAmbiente, _iluminacionInterna, _estructurasSoporteCultivo, _geomembranas, _motoresBarrasTransmision, _sugetadoresCerramiento, _tanquesAgua, _nebulizadores, _equipoCientificoEspecializado, _estacionesMeteorologicas, _abanicosVentiladores, _anclajes, _idEquipamiento, _idEmpresa, _idEmpresaOld, _cablesTensoresSoporte, _computoEspecifico, _emosoresCO2, _canaletasMesas, _cobertoresPiso;
			private SqlString		_otro;
		#endregion


		/// <summary>
		/// Propósito: Constructor de la clase.
		/// </summary>
		public cEQUIPAMIENTOBase()
		{
			// Agregar código aquí.
		}


		/// <summary>
		/// Propósito: Método Insertar. Este método inserta una fila nueva en la base de datos.
		/// </summary>
		/// <returns>True si tuvo éxito, sino genera una Exception. </returns>
		/// <remarks>
		/// Propiedades necesarias para este método: 
		/// <UL>
		///		 <LI>IdEmpresa</LI>
		///		 <LI>AbanicosVentiladores. May be SqlInt32.Null</LI>
		///		 <LI>Anclajes. May be SqlInt32.Null</LI>
		///		 <LI>CablesTensoresSoporte. May be SqlInt32.Null</LI>
		///		 <LI>CanaletasMesas. May be SqlInt32.Null</LI>
		///		 <LI>CobertoresPiso. May be SqlInt32.Null</LI>
		///		 <LI>ComputoEspecifico. May be SqlInt32.Null</LI>
		///		 <LI>EmosoresCO2. May be SqlInt32.Null</LI>
		///		 <LI>EstacionesMeteorologicas. May be SqlInt32.Null</LI>
		///		 <LI>EstructurasSoporteCultivo. May be SqlInt32.Null</LI>
		///		 <LI>Geomembranas. May be SqlInt32.Null</LI>
		///		 <LI>HumedecimientoAmbiente. May be SqlInt32.Null</LI>
		///		 <LI>IluminacionInterna. May be SqlInt32.Null</LI>
		///		 <LI>MotoresBarrasTransmision. May be SqlInt32.Null</LI>
		///		 <LI>Nebulizadores. May be SqlInt32.Null</LI>
		///		 <LI>EquipoCientificoEspecializado. May be SqlInt32.Null</LI>
		///		 <LI>SugetadoresCerramiento. May be SqlInt32.Null</LI>
		///		 <LI>TanquesAgua. May be SqlInt32.Null</LI>
		///		 <LI>Otro. May be SqlString.Null</LI>
		/// </UL>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>IdEquipamiento</LI>
		///		 <LI>CodError</LI>
		/// </UL>
		/// </remarks>
		public override bool Insertar()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_Insertar]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEmpresa", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEmpresa));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iabanicosVentiladores", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _abanicosVentiladores));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@ianclajes", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _anclajes));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icablesTensoresSoporte", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _cablesTensoresSoporte));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icanaletasMesas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _canaletasMesas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icobertoresPiso", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _cobertoresPiso));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icomputoEspecifico", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _computoEspecifico));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iemosoresCO2", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _emosoresCO2));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iestacionesMeteorologicas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _estacionesMeteorologicas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iestructurasSoporteCultivo", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _estructurasSoporteCultivo));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@igeomembranas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _geomembranas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@ihumedecimientoAmbiente", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _humedecimientoAmbiente));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iiluminacionInterna", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _iluminacionInterna));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@imotoresBarrasTransmision", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _motoresBarrasTransmision));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@inebulizadores", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _nebulizadores));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iequipoCientificoEspecializado", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _equipoCientificoEspecializado));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@isugetadoresCerramiento", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _sugetadoresCerramiento));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@itanquesAgua", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _tanquesAgua));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@sotro", SqlDbType.VarChar, 200, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, _otro));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEquipamiento", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _idEquipamiento));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				_filasAfectadas = cmdAEjecutar.ExecuteNonQuery();
				_idEquipamiento = Int32.Parse(cmdAEjecutar.Parameters["@iidEquipamiento"].Value.ToString());
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento Almacenado 'pr_EQUIPAMIENTO_Insertar' reportó el error Codigo: " + _codError);
				}

				return true;
			}
			catch (Exception ex)
			{
				// Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::Insertar::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
			}
		}


		/// <summary>
		/// Propósito: Método Update. Actualiza una fila existente en la base de datos.
		/// </summary>
		/// <returns>True si tuvo éxito, sino genera una Exception. </returns>
		/// <remarks>
		/// Propiedades necesarias para este método: 
		/// <UL>
		///		 <LI>IdEquipamiento</LI>
		///		 <LI>IdEmpresa</LI>
		///		 <LI>AbanicosVentiladores. May be SqlInt32.Null</LI>
		///		 <LI>Anclajes. May be SqlInt32.Null</LI>
		///		 <LI>CablesTensoresSoporte. May be SqlInt32.Null</LI>
		///		 <LI>CanaletasMesas. May be SqlInt32.Null</LI>
		///		 <LI>CobertoresPiso. May be SqlInt32.Null</LI>
		///		 <LI>ComputoEspecifico. May be SqlInt32.Null</LI>
		///		 <LI>EmosoresCO2. May be SqlInt32.Null</LI>
		///		 <LI>EstacionesMeteorologicas. May be SqlInt32.Null</LI>
		///		 <LI>EstructurasSoporteCultivo. May be SqlInt32.Null</LI>
		///		 <LI>Geomembranas. May be SqlInt32.Null</LI>
		///		 <LI>HumedecimientoAmbiente. May be SqlInt32.Null</LI>
		///		 <LI>IluminacionInterna. May be SqlInt32.Null</LI>
		///		 <LI>MotoresBarrasTransmision. May be SqlInt32.Null</LI>
		///		 <LI>Nebulizadores. May be SqlInt32.Null</LI>
		///		 <LI>EquipoCientificoEspecializado. May be SqlInt32.Null</LI>
		///		 <LI>SugetadoresCerramiento. May be SqlInt32.Null</LI>
		///		 <LI>TanquesAgua. May be SqlInt32.Null</LI>
		///		 <LI>Otro. May be SqlString.Null</LI>
		/// </UL>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>CodError</LI>
		/// </UL>
		/// </remarks>
		public override bool Actualizar()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_Actualizar]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEquipamiento", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEquipamiento));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEmpresa", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEmpresa));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iabanicosVentiladores", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _abanicosVentiladores));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@ianclajes", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _anclajes));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icablesTensoresSoporte", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _cablesTensoresSoporte));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icanaletasMesas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _canaletasMesas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icobertoresPiso", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _cobertoresPiso));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icomputoEspecifico", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _computoEspecifico));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iemosoresCO2", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _emosoresCO2));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iestacionesMeteorologicas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _estacionesMeteorologicas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iestructurasSoporteCultivo", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _estructurasSoporteCultivo));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@igeomembranas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _geomembranas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@ihumedecimientoAmbiente", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _humedecimientoAmbiente));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iiluminacionInterna", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _iluminacionInterna));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@imotoresBarrasTransmision", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _motoresBarrasTransmision));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@inebulizadores", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _nebulizadores));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iequipoCientificoEspecializado", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _equipoCientificoEspecializado));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@isugetadoresCerramiento", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _sugetadoresCerramiento));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@itanquesAgua", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _tanquesAgua));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@sotro", SqlDbType.VarChar, 200, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, _otro));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				_filasAfectadas = cmdAEjecutar.ExecuteNonQuery();
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento Almacenado 'pr_EQUIPAMIENTO_Actualizar' reportó el error Codigo: " + _codError);
				}

				return true;
			}
			catch (Exception ex)
			{
				// Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::Actualizar::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
			}
		}


		/// <summary>
		/// Propósito: Método Update para actualizar una o más filas utilizando la llave foránea 'idEmpresa.
		/// Este método actualiza una o más filas existentes en la base de datos, actualiza el campo 'idEmpresa' en
		/// todas las filas que tienen ese valor para este campo con el valor 'IdEmpresaanterior 
		/// con el valor colocado en la propiedad 'IdEmpresa'.
		/// </summary>
		/// <returns>True si tuvo éxito, sino genera una Exception. </returns>
		/// <remarks>
		/// Propiedades necesarias para este método: 
		/// <UL>
		///		 <LI>IdEmpresa</LI>
		///		 <LI>IdEmpresaOld</LI>
		/// </UL>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>CodError</LI>
		/// </UL>
		/// </remarks>
		public bool ActualizarTodos_Con_idEmpresa_FK()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_ActualizarTodos_Con_idEmpresa_FK]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEmpresa", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEmpresa));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEmpresaOld", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEmpresaOld));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				_filasAfectadas = cmdAEjecutar.ExecuteNonQuery();
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento almacenado 'pr_EQUIPAMIENTO_ActualizarTodos_Con_idEmpresa_FK' reportó el error Código: " + _codError);
				}

				return true;
			}
			catch (Exception ex)
			{
				// Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::ActualizarTodos_Con_idEmpresa_FK::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
			}
		}


		/// <summary>
		/// Propósito: Método Eliminar. Borra una fila en la base de datos, basado en la llave primaria.
		/// </summary>
		/// <returns>True si tuvo éxito, sino genera una Exception. </returns>
		/// <remarks>
		/// Propiedades necesarias para este método: 
		/// <UL>
		///		 <LI>IdEquipamiento</LI>
		/// </UL>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>CodError</LI>
		/// </UL>
		/// </remarks>
		public override bool Eliminar()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_Eliminar]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEquipamiento", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEquipamiento));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				_filasAfectadas = cmdAEjecutar.ExecuteNonQuery();
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento Almacenado 'pr_EQUIPAMIENTO_Eliminar' reportó el error Codigo: " + _codError);
				}

				return true;
			}
			catch (Exception ex)
			{
				// Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::Eliminar::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
			}
		}


		/// <summary>
		/// Propósito: Método Eliminar para una llave primaria. Este método va a borrar una o más filas en la base de datos, basado en la llave primaria 'idEmpresa'
		/// </summary>
		/// <returns>True si tuvo éxito, false otherwise. </returns>
		/// <remarks>
		/// Propiedades necesarias para este método: 
		/// <UL>
		///		 <LI>IdEmpresa</LI>
		/// </UL>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>CodError</LI>
		/// </UL>
		/// </remarks>
		public bool EliminarTodo_Con_idEmpresa_FK()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_EliminarTodo_Con_idEmpresa_FK]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEmpresa", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEmpresa));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				_filasAfectadas = cmdAEjecutar.ExecuteNonQuery();
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento almacenado 'pr_EQUIPAMIENTO_EliminarTodo_Con_idEmpresa_FK' reportó el error Código: " + _codError);
				}

				return true;
			}
			catch (Exception ex)
			{
				// Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::EliminarTodo_Con_idEmpresa_FK::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
			}
		}


		/// <summary>
		/// Propósito: Método SELECT. Este método hace Select de una fila existente en la base de datos, basado en la llave primaria.
		/// </summary>
		/// <returns>DataTable object si tuvo éxito, sino genera una Exception. </returns>
		/// <remarks>
		/// Propiedades necesarias para este método: 
		/// <UL>
		///		 <LI>IdEquipamiento</LI>
		/// </UL>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>CodError</LI>
		///		 <LI>IdEquipamiento</LI>
		///		 <LI>IdEmpresa</LI>
		///		 <LI>AbanicosVentiladores</LI>
		///		 <LI>Anclajes</LI>
		///		 <LI>CablesTensoresSoporte</LI>
		///		 <LI>CanaletasMesas</LI>
		///		 <LI>CobertoresPiso</LI>
		///		 <LI>ComputoEspecifico</LI>
		///		 <LI>EmosoresCO2</LI>
		///		 <LI>EstacionesMeteorologicas</LI>
		///		 <LI>EstructurasSoporteCultivo</LI>
		///		 <LI>Geomembranas</LI>
		///		 <LI>HumedecimientoAmbiente</LI>
		///		 <LI>IluminacionInterna</LI>
		///		 <LI>MotoresBarrasTransmision</LI>
		///		 <LI>Nebulizadores</LI>
		///		 <LI>EquipoCientificoEspecializado</LI>
		///		 <LI>SugetadoresCerramiento</LI>
		///		 <LI>TanquesAgua</LI>
		///		 <LI>Otro</LI>
		/// </UL>
		/// Llena todas las propiedades que corresponden al campo en tabla con el valor de la fila seleccionada.
		/// </remarks>
		public override DataTable SeleccionarUno()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_SeleccionarUno]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;
			DataTable toReturn = new DataTable("EQUIPAMIENTO");
			SqlDataAdapter adapter = new SqlDataAdapter(cmdAEjecutar);

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEquipamiento", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEquipamiento));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				adapter.Fill(toReturn);
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento Almacenado 'pr_EQUIPAMIENTO_SeleccionarUno' reportó el error Código: " + _codError);
				}

				if(toReturn.Rows.Count > 0)
				{
					_idEquipamiento = (Int32)toReturn.Rows[0]["idEquipamiento"];
					_idEmpresa = (Int32)toReturn.Rows[0]["idEmpresa"];
					_abanicosVentiladores = toReturn.Rows[0]["abanicosVentiladores"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["abanicosVentiladores"];
					_anclajes = toReturn.Rows[0]["anclajes"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["anclajes"];
					_cablesTensoresSoporte = toReturn.Rows[0]["cablesTensoresSoporte"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["cablesTensoresSoporte"];
					_canaletasMesas = toReturn.Rows[0]["canaletasMesas"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["canaletasMesas"];
					_cobertoresPiso = toReturn.Rows[0]["cobertoresPiso"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["cobertoresPiso"];
					_computoEspecifico = toReturn.Rows[0]["computoEspecifico"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["computoEspecifico"];
					_emosoresCO2 = toReturn.Rows[0]["emosoresCO2"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["emosoresCO2"];
					_estacionesMeteorologicas = toReturn.Rows[0]["estacionesMeteorologicas"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["estacionesMeteorologicas"];
					_estructurasSoporteCultivo = toReturn.Rows[0]["estructurasSoporteCultivo"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["estructurasSoporteCultivo"];
					_geomembranas = toReturn.Rows[0]["geomembranas"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["geomembranas"];
					_humedecimientoAmbiente = toReturn.Rows[0]["humedecimientoAmbiente"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["humedecimientoAmbiente"];
					_iluminacionInterna = toReturn.Rows[0]["iluminacionInterna"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["iluminacionInterna"];
					_motoresBarrasTransmision = toReturn.Rows[0]["motoresBarrasTransmision"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["motoresBarrasTransmision"];
					_nebulizadores = toReturn.Rows[0]["nebulizadores"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["nebulizadores"];
					_equipoCientificoEspecializado = toReturn.Rows[0]["equipoCientificoEspecializado"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["equipoCientificoEspecializado"];
					_sugetadoresCerramiento = toReturn.Rows[0]["sugetadoresCerramiento"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["sugetadoresCerramiento"];
					_tanquesAgua = toReturn.Rows[0]["tanquesAgua"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["tanquesAgua"];
					_otro = toReturn.Rows[0]["otro"] == System.DBNull.Value ? SqlString.Null : (string)toReturn.Rows[0]["otro"];
				}
				return toReturn;
			}
			catch (Exception ex)
			{
				// Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::SeleccionarUno::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
				adapter.Dispose();
			}
		}


        /// <summary>
        /// Propósito: Método SELECT. Este método hace Select de una fila existente en la base de datos, basado en la llave primaria.
        /// </summary>
        /// <returns>DataTable object si tuvo éxito, sino genera una Exception. </returns>
        /// <remarks>
        /// Propiedades necesarias para este método: 
        /// <UL>
        ///		 <LI>IdEmpresa</LI>
        /// </UL>
        /// Propiedades actualizadas luego de una llamada exitosa a este método: 
        /// <UL>
        ///		 <LI>CodError</LI>
        ///		 <LI>IdEquipamiento</LI>
        ///		 <LI>IdEmpresa</LI>
        ///		 <LI>AbanicosVentiladores</LI>
        ///		 <LI>Anclajes</LI>
        ///		 <LI>CablesTensoresSoporte</LI>
        ///		 <LI>CanaletasMesas</LI>
        ///		 <LI>CobertoresPiso</LI>
        ///		 <LI>ComputoEspecifico</LI>
        ///		 <LI>EmosoresCO2</LI>
        ///		 <LI>EstacionesMeteorologicas</LI>
        ///		 <LI>EstructurasSoporteCultivo</LI>
        ///		 <LI>Geomembranas</LI>
        ///		 <LI>HumedecimientoAmbiente</LI>
        ///		 <LI>IluminacionInterna</LI>
        ///		 <LI>MotoresBarrasTransmision</LI>
        ///		 <LI>Nebulizadores</LI>
        ///		 <LI>EquipoCientificoEspecializado</LI>
        ///		 <LI>SugetadoresCerramiento</LI>
        ///		 <LI>Sustratos</LI>
        ///		 <LI>TanquesAgua</LI>
        ///		 <LI>Otro</LI>
        /// </UL>
        /// Llena todas las propiedades que corresponden al campo en tabla con el valor de la fila seleccionada.
        /// </remarks>
        public override DataTable SeleccionarUnoConIdentificadorEmpresa()
        {
            SqlCommand cmdAEjecutar = new SqlCommand();
            cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_SeleccionarUno_ConIdEmpresa]";
            cmdAEjecutar.CommandType = CommandType.StoredProcedure;
            DataTable toReturn = new DataTable("EQUIPAMIENTO");
            SqlDataAdapter adapter = new SqlDataAdapter(cmdAEjecutar);

            // Usar el objeto conexión de la clase base
            cmdAEjecutar.Connection = _conexionBD;

            try
            {
                cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEmpresa", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEmpresa));
                cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

                if (_conexionBDEsCreadaLocal)
                {
                    // Abre una conexión.
                    _conexionBD.Open();
                }
                else
                {
                    if (_conexionBDProvider.IsTransactionPending)
                    {
                        cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
                    }
                }

                // Ejecuta la consulta.
                adapter.Fill(toReturn);
                _codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

                if (_codError != (int)ITCRError.AllOk)
                {
                    // Genera un error.
                    throw new Exception("Procedimiento Almacenado 'pr_EQUIPAMIENTO_SeleccionarUno_ConIdEmpresa' reportó el error Código: " + _codError);
                }

                if (toReturn.Rows.Count > 0)
                {
                    _idEquipamiento = (Int32)toReturn.Rows[0]["idEquipamiento"];
                    _idEmpresa = (Int32)toReturn.Rows[0]["idEmpresa"];
                    _abanicosVentiladores = toReturn.Rows[0]["abanicosVentiladores"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["abanicosVentiladores"];
                    _anclajes = toReturn.Rows[0]["anclajes"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["anclajes"];
                    _cablesTensoresSoporte = toReturn.Rows[0]["cablesTensoresSoporte"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["cablesTensoresSoporte"];
                    _canaletasMesas = toReturn.Rows[0]["canaletasMesas"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["canaletasMesas"];
                    _cobertoresPiso = toReturn.Rows[0]["cobertoresPiso"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["cobertoresPiso"];
                    _computoEspecifico = toReturn.Rows[0]["computoEspecifico"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["computoEspecifico"];
                    _emosoresCO2 = toReturn.Rows[0]["emosoresCO2"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["emosoresCO2"];
                    _estacionesMeteorologicas = toReturn.Rows[0]["estacionesMeteorologicas"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["estacionesMeteorologicas"];
                    _estructurasSoporteCultivo = toReturn.Rows[0]["estructurasSoporteCultivo"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["estructurasSoporteCultivo"];
                    _geomembranas = toReturn.Rows[0]["geomembranas"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["geomembranas"];
                    _humedecimientoAmbiente = toReturn.Rows[0]["humedecimientoAmbiente"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["humedecimientoAmbiente"];
                    _iluminacionInterna = toReturn.Rows[0]["iluminacionInterna"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["iluminacionInterna"];
                    _motoresBarrasTransmision = toReturn.Rows[0]["motoresBarrasTransmision"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["motoresBarrasTransmision"];
                    _nebulizadores = toReturn.Rows[0]["nebulizadores"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["nebulizadores"];
                    _equipoCientificoEspecializado = toReturn.Rows[0]["equipoCientificoEspecializado"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["equipoCientificoEspecializado"];
                    _sugetadoresCerramiento = toReturn.Rows[0]["sugetadoresCerramiento"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["sugetadoresCerramiento"];                    
                    _tanquesAgua = toReturn.Rows[0]["tanquesAgua"] == System.DBNull.Value ? SqlInt32.Null : (Int32)toReturn.Rows[0]["tanquesAgua"];
                    _otro = toReturn.Rows[0]["otro"] == System.DBNull.Value ? SqlString.Null : (string)toReturn.Rows[0]["otro"];
                }
                return toReturn;
            }
            catch (Exception ex)
            {
                // Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
                throw new Exception("cEQUIPAMIENTOBase::SeleccionarUnoConIdEmpresa::Ocurrió un error." + ex.Message, ex);
            }
            finally
            {
                if (_conexionBDEsCreadaLocal)
                {
                    // Cierra la conexión.
                    _conexionBD.Close();
                }
                cmdAEjecutar.Dispose();
                adapter.Dispose();
            }
        }



		/// <summary>
		/// Propósito: Método SeleccionarTodos. Este método va a Hacer un SELECT All de tabla.
		/// </summary>
		/// <returns>DataTable object si tuvo éxito, sino genera una Exception. </returns>
		/// <remarks>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>CodError</LI>
		/// </UL>
		/// </remarks>
		public override DataTable SeleccionarTodos()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_SeleccionarTodos]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;
			DataTable toReturn = new DataTable("EQUIPAMIENTO");
			SqlDataAdapter adapter = new SqlDataAdapter(cmdAEjecutar);

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				adapter.Fill(toReturn);
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento Almacenado 'pr_EQUIPAMIENTO_SeleccionarTodos' reportó el error Código: " + _codError);
				}

				return toReturn;
			}
			catch (Exception ex)
			{
				// Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::SeleccionarTodos::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
				adapter.Dispose();
			}
		}


		/// <summary>
		/// Propósito: Método SELECT para una llave primaria. Este método hace Select de una o más filas de la base de datos, basado en la llave primaria 'idEmpresa'
		/// </summary>
		/// <returns>DataTable object si tuvo éxito, sino genera una Exception. </returns>
		/// <remarks>
		/// Propiedades necesarias para este método: 
		/// <UL>
		///		 <LI>IdEmpresa</LI>
		/// </UL>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>CodError</LI>
		/// </UL>
		/// </remarks>
		public DataTable SeleccionarTodos_Con_idEmpresa_FK()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_SeleccionarTodos_Con_idEmpresa_FK]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;
			DataTable toReturn = new DataTable("EQUIPAMIENTO");
			SqlDataAdapter adapter = new SqlDataAdapter(cmdAEjecutar);

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEmpresa", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEmpresa));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				adapter.Fill(toReturn);
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento Almacenado 'pr_EQUIPAMIENTO_SeleccionarTodos_Con_idEmpresa_FK' reportó el error Código: " + _codError);
				}

				return toReturn;
			}
			catch(Exception ex)
			{
				// Ocurrió un error. Le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::SeleccionarTodos_Con_idEmpresa_FK::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
				adapter.Dispose();
			}
		}


		/// <summary>
		/// Propósito: Método Buscar. Este método hace una busqueda de acuerdo con todos los campos de la tabla.
		/// </summary>
		/// <returns>DataTable si tuvo éxito, sino genera una Exception. </returns>
		/// <remarks>
		/// Propiedades necesarias para este método: 
		/// <UL>
		///		 <LI>IdEquipamiento</LI>
		///		 <LI>IdEmpresa</LI>
		///		 <LI>AbanicosVentiladores. May be SqlInt32.Null</LI>
		///		 <LI>Anclajes. May be SqlInt32.Null</LI>
		///		 <LI>CablesTensoresSoporte. May be SqlInt32.Null</LI>
		///		 <LI>CanaletasMesas. May be SqlInt32.Null</LI>
		///		 <LI>CobertoresPiso. May be SqlInt32.Null</LI>
		///		 <LI>ComputoEspecifico. May be SqlInt32.Null</LI>
		///		 <LI>EmosoresCO2. May be SqlInt32.Null</LI>
		///		 <LI>EstacionesMeteorologicas. May be SqlInt32.Null</LI>
		///		 <LI>EstructurasSoporteCultivo. May be SqlInt32.Null</LI>
		///		 <LI>Geomembranas. May be SqlInt32.Null</LI>
		///		 <LI>HumedecimientoAmbiente. May be SqlInt32.Null</LI>
		///		 <LI>IluminacionInterna. May be SqlInt32.Null</LI>
		///		 <LI>MotoresBarrasTransmision. May be SqlInt32.Null</LI>
		///		 <LI>Nebulizadores. May be SqlInt32.Null</LI>
		///		 <LI>EquipoCientificoEspecializado. May be SqlInt32.Null</LI>
		///		 <LI>SugetadoresCerramiento. May be SqlInt32.Null</LI>
		///		 <LI>TanquesAgua. May be SqlInt32.Null</LI>
		///		 <LI>Otro. May be SqlString.Null</LI>
		/// </UL>
		/// Propiedades actualizadas luego de una llamada exitosa a este método: 
		/// <UL>
		///		 <LI>CodError</LI>
		/// </UL>
		/// </remarks>
		public override DataTable Buscar()
		{
			SqlCommand	cmdAEjecutar = new SqlCommand();
			cmdAEjecutar.CommandText = "dbo.[pr_EQUIPAMIENTO_Buscar]";
			cmdAEjecutar.CommandType = CommandType.StoredProcedure;
			DataTable toReturn = new DataTable("EQUIPAMIENTO");
			SqlDataAdapter adapter = new SqlDataAdapter(cmdAEjecutar);

			// Usar el objeto conexión de la clase base
			cmdAEjecutar.Connection = _conexionBD;

			try
			{
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEquipamiento", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEquipamiento));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iidEmpresa", SqlDbType.Int, 4, ParameterDirection.Input, false, 10, 0, "", DataRowVersion.Proposed, _idEmpresa));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iabanicosVentiladores", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _abanicosVentiladores));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@ianclajes", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _anclajes));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icablesTensoresSoporte", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _cablesTensoresSoporte));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icanaletasMesas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _canaletasMesas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icobertoresPiso", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _cobertoresPiso));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@icomputoEspecifico", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _computoEspecifico));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iemosoresCO2", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _emosoresCO2));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iestacionesMeteorologicas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _estacionesMeteorologicas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iestructurasSoporteCultivo", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _estructurasSoporteCultivo));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@igeomembranas", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _geomembranas));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@ihumedecimientoAmbiente", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _humedecimientoAmbiente));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iiluminacionInterna", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _iluminacionInterna));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@imotoresBarrasTransmision", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _motoresBarrasTransmision));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@inebulizadores", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _nebulizadores));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iequipoCientificoEspecializado", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _equipoCientificoEspecializado));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@isugetadoresCerramiento", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _sugetadoresCerramiento));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@itanquesAgua", SqlDbType.Int, 4, ParameterDirection.Input, true, 10, 0, "", DataRowVersion.Proposed, _tanquesAgua));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@sotro", SqlDbType.VarChar, 200, ParameterDirection.Input, true, 0, 0, "", DataRowVersion.Proposed, _otro));
				cmdAEjecutar.Parameters.Add(new SqlParameter("@iCodError", SqlDbType.Int, 4, ParameterDirection.Output, true, 10, 0, "", DataRowVersion.Proposed, _codError));

				if(_conexionBDEsCreadaLocal)
				{
					// Abre una conexión.
					_conexionBD.Open();
				}
				else
				{
					if(_conexionBDProvider.IsTransactionPending)
					{
						cmdAEjecutar.Transaction = _conexionBDProvider.CurrentTransaction;
					}
				}

				// Ejecuta la consulta.
				adapter.Fill(toReturn);
				_codError = Int32.Parse(cmdAEjecutar.Parameters["@iCodError"].Value.ToString());

				if(_codError != (int)ITCRError.AllOk)
				{
					// Genera un error.
					throw new Exception("Procedimiento Almacenado 'pr_EQUIPAMIENTO_Buscar' reportó el error Código: " + _codError);
				}

				return toReturn;
			}
			catch (Exception ex)
			{
				// Ocurrió un error. le hace Bubble a quien llama y encapsula el objeto Exception
				throw new Exception("cEQUIPAMIENTOBase::Buscar::Ocurrió un error." + ex.Message, ex);
			}
			finally
			{
				if(_conexionBDEsCreadaLocal)
				{
					// Cierra la conexión.
					_conexionBD.Close();
				}
				cmdAEjecutar.Dispose();
				adapter.Dispose();
			}
		}


		#region Declaraciones de propiedades de la clase
		public SqlInt32 IdEquipamiento
		{
			get
			{
				return _idEquipamiento;
			}
			set
			{
				SqlInt32 idEquipamientoTmp = (SqlInt32)value;
				if(idEquipamientoTmp.IsNull)
				{
					throw new ArgumentOutOfRangeException("IdEquipamiento", "IdEquipamiento can't be NULL");
				}
				_idEquipamiento = value;
			}
		}


		public SqlInt32 IdEmpresa
		{
			get
			{
				return _idEmpresa;
			}
			set
			{
				SqlInt32 idEmpresaTmp = (SqlInt32)value;
				if(idEmpresaTmp.IsNull)
				{
					throw new ArgumentOutOfRangeException("IdEmpresa", "IdEmpresa can't be NULL");
				}
				_idEmpresa = value;
			}
		}
		public SqlInt32 IdEmpresaOld
		{
			get
			{
				return _idEmpresaOld;
			}
			set
			{
				SqlInt32 idEmpresaOldTmp = (SqlInt32)value;
				if(idEmpresaOldTmp.IsNull )
				{
					throw new ArgumentOutOfRangeException("IdEmpresaOld", "IdEmpresaOld can't be NULL");
				}
				_idEmpresaOld = value;
			}
		}


		public SqlInt32 AbanicosVentiladores
		{
			get
			{
				return _abanicosVentiladores;
			}
			set
			{
				_abanicosVentiladores = value;
			}
		}


		public SqlInt32 Anclajes
		{
			get
			{
				return _anclajes;
			}
			set
			{
				_anclajes = value;
			}
		}


		public SqlInt32 CablesTensoresSoporte
		{
			get
			{
				return _cablesTensoresSoporte;
			}
			set
			{
				_cablesTensoresSoporte = value;
			}
		}


		public SqlInt32 CanaletasMesas
		{
			get
			{
				return _canaletasMesas;
			}
			set
			{
				_canaletasMesas = value;
			}
		}


		public SqlInt32 CobertoresPiso
		{
			get
			{
				return _cobertoresPiso;
			}
			set
			{
				_cobertoresPiso = value;
			}
		}


		public SqlInt32 ComputoEspecifico
		{
			get
			{
				return _computoEspecifico;
			}
			set
			{
				_computoEspecifico = value;
			}
		}


		public SqlInt32 EmosoresCO2
		{
			get
			{
				return _emosoresCO2;
			}
			set
			{
				_emosoresCO2 = value;
			}
		}


		public SqlInt32 EstacionesMeteorologicas
		{
			get
			{
				return _estacionesMeteorologicas;
			}
			set
			{
				_estacionesMeteorologicas = value;
			}
		}


		public SqlInt32 EstructurasSoporteCultivo
		{
			get
			{
				return _estructurasSoporteCultivo;
			}
			set
			{
				_estructurasSoporteCultivo = value;
			}
		}


		public SqlInt32 Geomembranas
		{
			get
			{
				return _geomembranas;
			}
			set
			{
				_geomembranas = value;
			}
		}


		public SqlInt32 HumedecimientoAmbiente
		{
			get
			{
				return _humedecimientoAmbiente;
			}
			set
			{
				_humedecimientoAmbiente = value;
			}
		}


		public SqlInt32 IluminacionInterna
		{
			get
			{
				return _iluminacionInterna;
			}
			set
			{
				_iluminacionInterna = value;
			}
		}


		public SqlInt32 MotoresBarrasTransmision
		{
			get
			{
				return _motoresBarrasTransmision;
			}
			set
			{
				_motoresBarrasTransmision = value;
			}
		}


		public SqlInt32 Nebulizadores
		{
			get
			{
				return _nebulizadores;
			}
			set
			{
				_nebulizadores = value;
			}
		}


		public SqlInt32 EquipoCientificoEspecializado
		{
			get
			{
				return _equipoCientificoEspecializado;
			}
			set
			{
				_equipoCientificoEspecializado = value;
			}
		}


		public SqlInt32 SugetadoresCerramiento
		{
			get
			{
				return _sugetadoresCerramiento;
			}
			set
			{
				_sugetadoresCerramiento = value;
			}
		}


		public SqlInt32 TanquesAgua
		{
			get
			{
				return _tanquesAgua;
			}
			set
			{
				_tanquesAgua = value;
			}
		}


		public SqlString Otro
		{
			get
			{
				return _otro;
			}
			set
			{
				_otro = value;
			}
		}
		#endregion
	}
}
